(require (planet schematics/schemeunit:3))

(define (a-plus-abs-b a b)
  ((if (> b 0) + -) a b))
(check-equal? (a-plus-abs-b 4 5) 9)
(check-equal? (a-plus-abs-b 4 -5) 9)

;A procedure a-plus-abs-b avalia primeiro o operador, que é a expressão composta
;(if (> b 0) + -)
;Esta expressão é avaliada e retorna "+" quando b > 0 ou "-" caso contrário 
;Os operadores retornados pela expressão são usados avaliados contra os parâmetros a e b.
;Assim, se b > 0 a expressão resultante é (+ a b), se b <= 0 a expressão resultante é (- a b)